One of the most important stages in the software development cycle is the debugging that occurs after a software product has shipped. This stage is important because the experiences of millions of users of the software product may be utilized during this stage to isolate program errors, identify frequently or infrequently used features, and to generally make the software product better. In order to capitalize on the body of user experience with the software product, however, it is necessary to obtain data from users and to route this data to the software developer.
Prior to the widespread adoption and use of the Internet, it was very difficult for software developers to obtain quality data regarding how a software product performs for a large number of users. Now, however, the Internet connects millions of users with the developers that create and debug the software they use. The Internet, therefore, allows data regarding the operation of a software product to be sent from a computer user to the developer of the product. The data may then be utilized by the developer to fix errors, also called “bugs,” in the program, to change the way the program operates by adding or removing features, and to otherwise improve the program. However, current systems for transmitting this data from a user to a software developer suffers from several drawbacks that reduce their effectiveness.
Current systems for reporting data regarding the operation of a software product generate event reports in response to the occurrence of an event within program code. For instance, an event report may be generated when an error occurs in the program code, when an unhandled exception is generated by the program code, when a particular line of code is encountered, or under other circumstances. Data that may assist the developer in understanding the event and in modifying the program code to ensure that it does not occur again is typically included in the event report. For instance, data describing the state of the computer when the event occurred may be included along with other data in the event report.
When a large number of event reports regarding the occurrence of a particular event are obtained, this data may be utilized by developer to understand the events that have occurred and to modify the program code. However, the previous systems for reporting the occurrence of events cannot obtain this information to help a user of the computer on which the event occurred unless the user elects to send an event report. As a result, the amount of help information provided to a user when a particular error or other type of event occurs is typically very limited unless the user elects to send an event report. However, detailed help should be available to a user even if the user elects not to send an error report. There is a need, therefore, for a system that can utilize the reported event data to provide an additional level of help content to a user regarding the occurrence of the event even when the user elects not to send an event report for a particular error.
It is with respect to these considerations and others that the present invention has been made.